package com.lktx.sso.system.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hserver.core.ioc.annotation.Autowired;
import cn.hserver.plugin.web.annotation.Controller;
import cn.hserver.plugin.web.annotation.GET;
import cn.hserver.plugin.web.annotation.POST;
import cn.hserver.plugin.web.annotation.PUT;
import lombok.extern.slf4j.Slf4j;
import com.lktx.sso.system.common.MyResult;
import com.lktx.sso.system.config.Log;
import com.lktx.sso.system.entity.Menu;
import com.lktx.sso.system.service.MenuService;

import java.util.Set;

/**
 * 菜单信息接口
 *
*
 * @since 2022-06-12
 */
@Slf4j
@Controller("/menu")
@Log
public class MenuController {

    @Autowired
    private MenuService service;

    /**
     * 新增单条数据
     *
     * @param entity 实体对象
     * @return 新增结果
     */
    @SaCheckPermission("menu:add")
    @POST
    public MyResult save( Menu entity) {
        service.save(entity);
        return MyResult.success();
    }

    /**
     * 修改单条数据
     *
     * @param entity 实体对象
     * @return 修改结果
     */
    @SaCheckPermission("menu:edit")
    @PUT
    public MyResult update(Menu entity) {
        service.update(entity);
        return MyResult.success();
    }

    /**
     * 批量删除数据
     *
     * @param ids 主键集合
     * @return 操作结果
     */
    @SaCheckPermission("menu:delete")
    @POST("/delete")
    public MyResult deleteByIds(Set<Long> ids) {
        service.deleteByIds(ids);
        return MyResult.success();
    }

    /**
     * 获取权限列表和树结构
     */
    @GET("/list-tree")
    public MyResult getListAndTree() {
        return MyResult.of(service.getListAndTree());
    }

}
